//package com.inspur.edp.bef.dtgenerator.api.beActionAssemblerGen;
//
//import com.inspur.edp.bef.api.action.assembler.IAbstractActionAssemblerFactory;
//import com.inspur.edp.bef.bizentity.GspBizEntityObject;
//import com.inspur.edp.bef.bizentity.GspBusinessEntity;
//import com.inspur.edp.bef.bizentity.operation.BizAction;
//import com.inspur.edp.bef.bizentity.operation.BizOperation;
//import com.inspur.edp.bef.bizentity.operation.internalbeaction.IInternalBEAction;
//import com.inspur.edp.bef.dtgenerator.api.BefApiGeneratorContext;
//import com.inspur.edp.caf.generator.BaseGenerator;
//import com.inspur.edp.caf.generator.item.InterfaceGenerator;
//import com.inspur.edp.caf.generator.item.InterfaceGeneratorContext;
//import com.inspur.edp.cef.gencommon.MediateType;
//import com.inspur.edp.cef.generator.overall.Utils;
//import com.inspur.edp.das.commonmodel.IGspCommonObject;
//import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
//
//public class BEAssFactoryInterfaceGenerator extends InterfaceGenerator {
//
//  // region Static Members
//  private static final String ItemNameTemplate = "I%1$sBEActionAssemblerFactory";
//
//  // region BasicInfo
//  private BefApiGeneratorContext apiGenCtx;
//  private GspBizEntityObject beObject;
//  private boolean isRoot;
//
//  public BEAssFactoryInterfaceGenerator(
//      BefApiGeneratorContext apiGenCtx, GspBizEntityObject beObject, boolean isRoot) {
//    super(apiGenCtx.getCompilationUnitInfo());
//    this.apiGenCtx = apiGenCtx;
//    this.beObject = beObject;
//    this.isRoot = isRoot;
//    apiGenCtx
//        .getBEActionAssFactoryInterfaceTypes()
//        .put(
//            beObject.getCode(),
//            new MediateType(apiGenCtx.getCompilationUnitInfo().getPackageName(), getName()));
//  }
//
//  public static String getItemName(IGspCommonObject cmObject) {
//    return String.format(ItemNameTemplate, cmObject.getCode());
//  }
//
//  public static String getApiNamespace(GspBusinessEntity be) {
//    return be.getApiNamespace().getDefaultNamespace();
//  }
//
//  @Override
//  protected InterfaceGeneratorContext createInterfaceItemContext() {
//    return new InterfaceGeneratorContext();
//  }
//
//  @Override
//  protected java.util.ArrayList<ModifierKeyword> getAccessModifier() {
//    return new java.util.ArrayList<ModifierKeyword>(
//        java.util.Arrays.asList(ModifierKeyword.PUBLIC_KEYWORD));
//  }
//
//  // endregion
//
//  @Override
//  protected String getName() {
//    return getItemName(beObject);
//  }
//
//  @Override
//  protected java.util.ArrayList<com.inspur.edp.caf.generator.baseInfo.TypeInfo>
//      addParentInterfaces() {
//    return new java.util.ArrayList<com.inspur.edp.caf.generator.baseInfo.TypeInfo>(
//        java.util.Arrays.asList(
//            Utils.createTypeInfo(IAbstractActionAssemblerFactory.class)));
//  }
//
//  // endregion
//
//  // region ChildGenerators
//  @Override
//  protected java.util.ArrayList<BaseGenerator> createChildGenerators() {
//    java.util.ArrayList<BaseGenerator> list = super.createChildGenerators();
//    addActionGenerators(list);
//    addChildAssFactoryInterfaceGenerator(list);
//    return list;
//  }
//
//  private void addChildAssFactoryInterfaceGenerator(java.util.ArrayList<BaseGenerator> list) {
//    for (IGspCommonObject item : beObject.getContainChildObjects()) {
////      list.add(
////          new BEAssFactoryInterfaceGenerator(
////              this.apiGenCtx,
////              (GspBizEntityObject) ((item instanceof GspBizEntityObject) ? item : null),
////              false));
//    }
//  }
//
//  private void addActionGenerators(java.util.ArrayList<BaseGenerator> list) {
//    for (BizOperation action : beObject.getBizActions()) {
//      if (action instanceof IInternalBEAction) {
//        if (isRoot) {
//          list.add(new InternalBEActionMethodGenerator((BizAction) action));
//        }
//      } else {
//        list.add(new CustomBEActionMethodGenerator(apiGenCtx.getBeGenCtx(), (BizAction) action));
//      }
//    }
//  }
//
//  // endregion
//}
